package com.xique.park.controller.client.web.service.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.request.client.ClientCancelPassRequest;
import com.xique.park.bean.request.client.ClientSpaceEditRequest;
import com.xique.park.bean.request.comm.ParkOnEditPlateSaveRequest;
import com.xique.park.controller.client.web.bean.request.*;

/**
 * @author shd
 * @create 2021/7/22 15:53
 */
public interface IClientHomeBizService {

    /**
     * 岗亭列表
     * @author shd
     * @date 2021/7/23 9:50
     * @param userId
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getClientList(Long userId);

    /**
     * 选择岗亭
     * @author shd
     * @date 2021/7/23 9:50
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult selectClient(ClientHomeSelectClientRequest request);

    /**
     * 获取岗亭首页信息
     * @author shd
     * @date 2021/7/27 10:50
     * @param clientId
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getHomePageInfo(String clientId);

    /**
     * 获取岗亭设备列表
     * @author shd
     * @date 2021/7/29 10:24
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getDeviceList(ClientDeviceListRequest request);

    AjaxResult editClientLaneConfig(WebClientLaneConfig request);

    AjaxResult lanDetail(Long laneId);

    AjaxResult handCarInOrOut(WebClientHandInOutRequest request);

    AjaxResult editParkOnPlate(ParkOnEditPlateSaveRequest request);

    AjaxResult getParkOnUrl(String recordId);

    AjaxResult getHandOutInfo(WebClientHandInOutRequest request);

    AjaxResult cancelPass(ClientCancelPassRequest request);

    AjaxResult cashPass(ClientCashOrFreePassRequest request);

    AjaxResult freePass(ClientCashOrFreePassRequest request);

    /**
     * 车位信息
     * @author shd
     * @date 2021/8/9 14:05
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult getSpaceInfo();

    /**
     * 修改剩余车位数
     * @author shd
     * @date 2021/8/9 15:04
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult spaceEdit(ClientSpaceEditRequest request);


    /**
     * 获取通道信息
     * @author shd
     * @date 2021/8/10 9:49
     * @param deviceId
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getLaneInfo(Long deviceId);

    /**
     * 现金收费记录
     * @param request
     * @return
     */
    AjaxResult cashPassList(WebClientCashPassListRequest request);

    /**
     * 查询入场记录详情（岗亭点击入场记录弹窗数据显示）
     * @param inId
     * @return
     */
    AjaxResult parkInDetail(Long inId);

    AjaxResult selectParkOutDetail(Long outId);

    AjaxResult confirmIn(ClientConfirmInRequest request);

    AjaxResult getHandOutParkOnList(HandOutParkOnListRequest request);

    /**
     * 判断车场手动入场是否允许修改入场时间
     * @return
     */
    AjaxResult isAllowEditInTime();

    /**
     * 获取免费放行原因
     * @return
     */
    AjaxResult getFreePassReason();

    /**
     * 获取开闸原因
     * @return
     */
    AjaxResult getOpenGateReason();

    /**
     * 获取关闸原因
     * @return
     */
    AjaxResult getCloseGateReason();
}
